<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>字符串扩展</title>
</head>
<body>
<script>
    var s="吉a";
    console.log(s.charAt(0));//"吉"
    console.log(s.charAt(1));//""
    console.log(s.length);//1
    console.log(s.charCodeAt(0));//21513
    console.log(s.charCodeAt(1));//97
    //和上面那种方法反悔的是一样的
    console.log(s.codePointAt(0));
    console.log(s.codePointAt(1));
    console.log(s.codePointAt(0).toString(16));
    console.log(s.codePointAt(1).toString(16));

    console.log(String.fromCodePoint(0x5409));//吉

    //字符串遍历接口,可识别码点大于0xffff的码点
    //for ...of
    //normalize()  不同表示方法同意为同样的形式，这被称为Unicode正规化
    //可以接受四个参数  NFC 标准等价合成 NFD 标准等价分解 NFKC 兼容等价合成 NFKD 兼容等价分解

    //js中只有indexof方法来确定一个字符是否包含在另一个字符串中，
    //includes()  返回布尔值  表示找到了参数字符串
    //startsWidth（）   返回布尔值，表示参数字符串是否在源字符串中头部
    //endsWidth（）   返回布尔值，表示参数字符串是否在源字符串中尾部
//都支持第二个参数，表示开始搜索的位置，ends与其他的不一样，他表示前n个位置

    //repeat()  表示吧字符串重复了几次。返回一个新的字符串

    //padStart() 前面补全 padEnd()后面补全  表示字符串补全功能，
    console.log('x'.padStart(5,'ab'));//ababx

    //模板字符串

    //" sds "+item+"jdds"  等价于  `sds${item}jdds`
    //模板字符串中要用到反引号，则用反斜杠转义   {}  默认调用toString方法
    //模板编译   <%  %>  ES6那本书上有  两种思路：一种是转换成  js表达式字符串
    //一种是用正则去匹配，
    var a=9;
    var b=6;
    //标签模板
    tag `hello ${a+b} world`;
    //tag是另外一种函数调用，接受的第一个参数是一个数组，该数组的成员是模板字符串中那些没有被变量替换的部分
    //变量替换只发生在数组的第一个成员与第二个成员之间，第二个和第三个之间，其他的都是被替换之后的值
    //它的一个重要作用是过滤HTML字符串，防止用户输入恶意的内容
    //也就是转义，把冒号啊，标签啊，都给他转移了

    //string.raw（）  用来充当末班字符串的处理函数。返回一个反斜线都被转义，对应替换变量后的末班字符串。
    //如果已经转义了那就不用再处理了

    //number对象提供了Number.isFinite()  Number.isNaN()
    //number对象提供了Number.isFinite()  Number.isNaN()  用来检查无穷额NaN   对非数值全都返回false，
    //他只对数值进行判断，原来的方法是isNaN先把number转换，转换不了就返回NaN

    //Number.parseInt()  Number.parseFloat()    和原来不一样的是写法不一样了这样逐步减少了全局性的方法
    //Number.isInteger()  判断一个数是不是整数，在js中整数合福店是同一个存储方法
    //Number.EPSILON()  引入这小的一个量，目的在于为浮点数计算设置一个误差范围，还有什么安全数什么的

    //还增加了什么math函数，还有正玄余玄，双曲余弦  对数什么


</script>
</body>
</html>